1. Field
The present disclosure relates to a mobile operating environment, and more particularly, to overlay networks and methods and apparatus for publishing data structures therein.
2. Background
An overlay network is a virtual network of nodes and logical links that is built on top of an existing network. Examples of an overlay network include, but are not limited to, the Internet, Chord, Content Addressable Network (CAN), Pastry, and Viceroy. In some overlay networks, each node can store a portion of overlay network data, called a partition, so as to distribute the data across the network to increase network efficiency in storage and retrieval of the data.
A device or node that joins an overlay network may desire to obtain a service from another device or node in the overlay network. Such services are published in the overlay network using any one of a plurality of service description languages, each having a corresponding service discovery protocol for use to find the published service. A definition of service discovery as given by Wikipedia states: “[s]ervice discovery protocols are network protocols which allow automatic detection of devices and services offered by these devices on a computer network.” In other words, service discovery is the action of finding a service provider for a requested service. When the location of the demanded service (typically the address of the service provider) is retrieved, the user may further access and use it.
In general, service discovery protocols include two entities: (a) the service provider—who provides the service on the overlay, and (b) the client—who uses the service. In one aspect, examples of a service provider include nodes which provide services such as printing, scanning, faxing, storage, music share, file share, games, and web services such as for booking movie tickets, hotels, air tickets, or online gaming, etc. Further, any node in the network can act as a client. Thus, the goal of service discovery is to help the client find a service provider for a particular service of interest (if such a service exists).
For service discovery to be successful in a peer-to-peer overlay network, the service provider should specify its service(s) using a service description language, metadata about the service should be stored in some searchable form on nodes in the overlay, and clients should be able to express the service requests using searchable keywords that are passed on to the querying system to help find the corresponding services.
In the prior art, however, a problem for finding all available services arises because of the use of different protocols. As noted above, services are usually described via a service description language, and this language is used both for publishing the service and for discovering the service in the overlay. However, there are several service description languages that are standardized, widely popular, and widely deployed for describing different kinds of services. Some examples include OWL-S, UDDI, UPnP, WSDL, XML, RDF, etc. Each of these languages has their own domain of popularity and there is no clear winner. Accordingly, as different languages are used by different services, a client can only recognize those services described using the same language as the query of the client. In the prior art, there is a loose coupling between the discovery protocol and the service description languages. For example, UPnP uses its own service description language, UDDI uses WSDL for web services, and so on. Thus, many available services will not be recognized.
Previous attempts to address the problem of handling multiple service languages have involved the use of translators to convert service descriptions published in one service description language into another which could eventually be published in the overlay. However, such approaches are cumbersome and given N different service description languages, where N is a positive integer, one would require at least O(N) translators to be implemented in each node, wherein O is some function.
Thus, it would be desirable to have a method of handling multiple service languages that allows efficient publication of service descriptions and efficient query processing.